/**
 * @file
 */
#ifndef COORDINATE_TRANSFORMATION
#define COORDINATE_TRANSFORMATION

#include <csignal>
#include <string>
// #include <status/status.h>


class CoordinateTransformation {
 public:

  /**
   * The default destructor.
   */
  virtual ~CoordinateTransformation() = default;

  /**
   * @brief The module initialization function. This is the first function being
   * called when the App starts. Usually this function loads the configurations,
   * @return Status initialization status
   */
  virtual void Init() = 0;

  /**
   * @brief The module start function. app usually triggered to execute
   * in two ways: 1. Triggered by upstream messages, or 2. Triggered by timer.
   * If an app is triggered by upstream messages, the Start() function usually
   * register a call back function that will be called when an upstream message
   * is received. If an app is triggered by timer, the Start() function usually
   * register a timer callback function.
   * @return Status start status
   */
  virtual void Start() = 0;

  /**
   * @brief The module stop function. This function will be called when
   * after ros::shutdown() has finished. 
   */
  virtual void Stop() = 0;


};






#endif